// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_GFX_ANIMATION_TEST_ANIMATION_DELEGATE_H_
#define UI_GFX_ANIMATION_TEST_ANIMATION_DELEGATE_H_

#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "ui/gfx/animation/animation_delegate.h"

namespace gfx {

// Trivial AnimationDelegate implementation. AnimationEnded/Canceled quit the
// message loop.
class TestAnimationDelegate : public AnimationDelegate {
public:
    TestAnimationDelegate()
        : canceled_(false)
        , finished_(false)
    {
    }

    virtual void AnimationEnded(const Animation* animation)
    {
        finished_ = true;
        base::MessageLoop::current()->QuitWhenIdle();
    }

    virtual void AnimationCanceled(const Animation* animation)
    {
        finished_ = true;
        canceled_ = true;
        base::MessageLoop::current()->QuitWhenIdle();
    }

    bool finished() const
    {
        return finished_;
    }

    bool canceled() const
    {
        return canceled_;
    }

private:
    bool canceled_;
    bool finished_;

    DISALLOW_COPY_AND_ASSIGN(TestAnimationDelegate);
};

} // namespace gfx

#endif // UI_GFX_ANIMATION_TEST_ANIMATION_DELEGATE_H_
